#ifndef _EDASIMPLESOLUTIONTABULIST_H_
#define _EDASIMPLESOLUTIONTABULIST_H_

#include <list>

#include "edaTabuList.h"

class edaSimpleSolutionTabuList : public edaTabuList
{
  public:
    edaSimpleSolutionTabuList();
    edaSimpleSolutionTabuList(unsigned int _maxSize);
    edaSimpleSolutionTabuList(const edaSimpleSolutionTabuList &tl);
    ~edaSimpleSolutionTabuList();

    edaTabuList* clone() const;
    void init();
    void add(const edaMove *_move, const edaSolution *_sol);
    void update();
    bool check(const edaMove *_move, const edaSolution *_sol);
    void Serialize(edaBuffer &buf, bool pack);

    setClassID(_SYSCLASSID_ + _CLSID_EDASIMPLESOLUTIONTABULIST_);

  private:
    void removeSolution(const edaSolution *_sol);
    unsigned int maxSize;
    unsigned int currentSize;

    std::list<edaSolution *> tabuList;
};

#endif
